package com.example.photography.view;

import android.content.Context;
import android.os.Bundle;

import androidx.appcompat.app.AlertDialog;

import com.example.photography.R;
import com.wang.avi.AVLoadingIndicatorView;

/**
 * 加载中Dialog
 * 
 * @author hzb
 */
public class LoadingDialog extends AlertDialog {

    private static LoadingDialog loadingDialog;
    private AVLoadingIndicatorView avi;
    //todo Dialog不应该用单例写，以后改进
    public static LoadingDialog getInstance(Context context) {
        if (null == loadingDialog) {
            loadingDialog = new LoadingDialog(context, R.style.TransparentDialog); //设置AlertDialog背景透明
            loadingDialog.setCancelable(false);
            loadingDialog.setCanceledOnTouchOutside(false);
        }
        return loadingDialog;
    }

    public LoadingDialog(Context context, int themeResId) {
        super(context,themeResId);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    protected void onStart() {
        super.onStart();
        this.setContentView(R.layout.dialog_loading);
        avi = (AVLoadingIndicatorView)this.findViewById(R.id.avi);
    }

    @Override
    public void show() {
        super.show();
        avi.show();
    }
    /**
     * 第二次进行增删操作会报错： android.view.WindowManager$BadTokenException:Unable to add window -- token android.os.BindViewerProxy@3966232 is not valid; is your activity running?
     * 由于我的Dialog是静态实例
     * 在Activity退出的时候 我仅仅是调用了 dialog.dissMiss( );
     * 导致第二次打开应用就老是报这个错误。
     * 原因是我在所有activity退出后  private static Dialog mDialog 等静态实例并未被销毁
     * 我再次打开后即使我是在Activity初始化之后再创建这个Dialog
     * 也还是会报这个错，所以我在Activity 销毁的时候 还要将Dialog的实例置空
     */
    @Override
    public void dismiss() {
        super.dismiss();
        if (avi != null){
            avi.hide();
        }
        loadingDialog = null;
    }
}